前一天我們介紹了損失函數,今天來介紹隨機森林與梯度提升機。
前面介紹了線性和羅吉斯兩種機器學習常見的模型,今天要再教大家隨機森林和梯度提升機兩種,其中梯度提升機和隨機森林長得很類似,讓我們來看一下有什麼差別?
隨機森林(RF, random forest)是用隨機的方式建立許多決策樹,而很多的決策樹組合起來就變成一個森林,對於分類算法來說,對隨機森林輸入新的樣本,森林裡的每個決策樹就會把該樣本分類,以投票的方式看哪一類別被選擇最多次,就預測那一類的樣本。
隨機森林主要有以下幾個特點
隨機森林主要可以分成集成與分袋方法
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(
n_estimators=10, #決策樹的數量量
criterion="gini",
max_features="auto", #如何選取 features
max_depth=10,
min_samples_split=2,
min_samples_leaf=1
)
梯度提升機在每一次生成樹時會修正前面樹預測的錯誤,並乘上學習率(learning rate)讓後面的樹能有更多學習的空間
可以決定要生成樹的數量,越多越不容易過擬合,但是運算時間會變長
from sklearn.ensemble import GradientBoostingClassifier
clf = GradientBoostingClassifier(
loss="deviance",
learning_rate=0.1, #每棵樹對最終結果的影響,應與 n_estimators 成反比
n_estimators=100 #決策樹的數量
)